#include <TcpSocket.h>
#include <SocketHandler.h>
#include <ListenSocket.h>


static  bool quit = false;


class IOSocket : public TcpSocket
{
public:
        IOSocket(ISocketHandler& h) : TcpSocket(h) {
                SetLineProtocol();
        }
        ~IOSocket() {}

        void OnConnect() {
                printf("#====-> OnConnect\n");
                while (GetOutputLength() < 500000)
                {
                        Send("zzzzzzzzzmmmmmmmmm1234lkkk543\r\n");
                }
//              Send("\r\n");
        }

        void OnAccept() {
                SetLineProtocol();
        }

        void OnDelete() {
                printf("#====-> OnDelete\n");
		exit(-1);
		quit = true;

        }

        void OnWriteComplete() {
		printf("#====-> OnWriteComplete\n");
        }
	void OnResolve() {
		printf("#====-> OnResolve\n");
	};
	void OnException() {
		printf("#====-> OnException\n");
	};
	void OnDisconnect() {
		printf("#====-> OnDisco\n");
		exit(-1);
		quit = true;

	};
	void OnConnectFailed() {
		printf("#====-> OnCoFail\n");
		exit(-1);
		quit = true;
	};
	void OnTimeout() {
		printf("#====-> OnTimeout\n");
		exit(-1);
		quit = true;
	};


        void OnLine(const std::string& line) {
		printf("\n");
		fflush(stdout);
		exit(-1);
		quit = true;
        }
};


int main(int argc, char *argv[])
{
        SocketHandler h;
        ListenSocket<IOSocket> l(h);
        l.Bind(1234);
        h.Add(&l);
        IOSocket sock(h);
        sock.Open("forumakad.pl", 1234);
        h.Add(&sock);
		printf("#====-> Go\n");
        while (!quit)
        {
                h.Select(1, 0);
        }
}


